home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Collection of Tools & Utilities
/
Collection of Tools and Utilities.iso
/
fortran
/
bcf7713b.zip
/
LIES.TXT
< prev
Wrap
Text File
|
1991-03-18
|
13KB
|
411 lines
------------------------------------------------
| BC-FORTRAN77 Vers.1.3b |
| Copyright: Andre Koestli |
| 1990 Martin-Luther-Str.63 |
| D7000 Stuttgart 50 |
|----------------------------------------------|
|----------------------------------------------|
| Die Version "b" von BC-FORTRAN77, bestehend |
| aus den nachfolgend beschriebenen 5 Dateien, |
| ist vollstaendig von mir programmiert. Ich |
| gestatte freies Nutzungsrecht an Vers.b fuer |
| nichtkommerzielle Anwendungen, alle Rechte |
| bleiben jedoch bei mir, insbesondere ist der |
| Verkauf der Vers.b, auch im Zusammenhang mit |
| anderen Produkten, nicht erlaubt. Jeder Ko- |
| pie ist dieser Text unveraendert beizufuegen.|
| Die Anwendung fuer militaerische Zwecke oder |
| entsprechende Forschung ist verboten! |
| Juli 1990 A.Koestli |
------------------------------------------------
BC-FORTRAN77 Version.b besteht aus Compiler, Linker,
Modulbibliothek und einem residenten Laufzeitsystem, das
u.a. einen einfachen Debugger enthaelt. Diese Version
laeuft auf einem MS-DOS Rechner mit 640kB RAM. Eine
Festplatte ist nicht erforderlich. Hiermit soll in
einfacher Weise ein Compiler fuer Programmierkurse
zur Verfuegung stehen. Dem kommt entgegen, dass
entsprechende Compiler fuer ATARI ST und AMIGA existieren.
Anfragen nach Zusendung einer anderen oder neueren Version
werde ich nur noch beantworten, wenn DM 20.- (Schein oder
Scheck) Aufwandsentschaedigung (Diskette, Umschlag, Porto
und Zeit) beigefuegt sind. Ich versende ausschliesslich
3 1/2 Zoll Disketten.
BC-FORTRAN77 Vers.b besteht aus folgenden Dateien:
LIES.TXT Dieser Text
BCF.EXE Compiler
BCL.EXE Linker
BCRTSY.EXE Residentes Laufzeitsystem.
LIB.B Bibliothek mit Standardfunktionen
Wird eine Kopie angefertigt, muessen immer alle Dateien
unveraendert uebernommen werden.
Installation.
-------------
BEVOR Compiler, Linker oder ein damit erzeugtes Programm
gestartet wird, MUSS das residente Laufzeitsystem
geladen sein. Dazu startet man das Programm BCRTSY.EXE.
Soll BC-FORTRAN77 regelmaessig verwendet werden, so
empfiehlt es sich, BCRTSY.EXE im AUTOEXEC.BAT zu starten.
Die *.EXE Dateien werden in eine Directory kopiert, die
im PATH enthalten ist, die Datei LIB.B gehoert in eine
APPEND Directory (siehe die MS-DOS Befehle PATH und
APPEND).
Compiler
--------
Der Compiler wird gestartet mit
BCF [-Option...] Datei...
Enthaelt Datei keinen Punkt, so wird .F angehaengt.
Die uebersetzte Form der Programme wird in Datei.B
abgelegt.
Beispiel:
BCF -D TEST.F
Uebersetzt TEST.F mit Debug-Option nach TEST.B
BCF TEST SUB
Uebersetzt TEST.F nach TEST.B und SUB.F nach SUB.B
BCF TEST.X
uebersetzt TEST.X nach TEST.B
Compiler Optionen
-----------------
Statt -Option kann auch /Option verwendet werden.
-D Debug, fasst -BVL zusammen.
-B deBugcode, impliziert -H und erzeugt
ausserdem Code fuer Debuggeraufrufe,
zum Ueberpruefen von Feldgrenzen und
Substrings.
-H parcHeck, Code zum Ueberpruefen der Parameter-
listen und auf Stackueberlauf erzeugen.
-V Varlist: Variablenliste fuer Debugger.
-L Lineslist: Zeilennummernliste fuer Debugger.
-U Uppercase: Klein- in Grossbuchstaben wandeln
(ausser in Characterkonstanten und
Formaten). Fehlt diese Option, so sind
xy, XY, Xy und xY vier verschiedene
Variablen!
-F Freeinput: Quellprogramm nicht im FORTRAN
Format. Nichtstandart!
-P Protokoll: Ausgabe der uebersetzten Zeilen.
-S Kurzprotokoll: (Short) eine Zeile pro Modul
mit groesse Stackframe und Code (Bytes).
-O One: Nur einen Ausgabefile erzeugen, mit dem
Namen des ersten Eingabefiles.
Sprachumfang
------------
BC-FORTRAN77 uebersetzt den vollstaendigen Standard nach
ANSI/ISO. Der Sprachstandard wird allerdings durch
einige Besonderheiten verletzt (meistens werden diese
als Erweiterungen bezeichnet). Ich empfehle dringend,
diese Dialektkonstrukte nicht zu verwenden, da sie nicht
standardisiert und damit nicht genau definiert sind.
Die wichtigsten dieser Besonderheiten:
INTEGER*1 8 bit INTEGER
INTEGER*2 16 bit INTEGER
INTEGER*4 wie INTEGER
LOGICAL*1 8 bit LOGICAL
LOGICAL*2 16 bit LOGICAL
LOGICAL*4 wie LOGICAL
IMPLICIT NONE abschalten der impliziten Typdef.
COMMON /%adr/ Absoluter Common, adr ist Konstante
oder einfache Variable die die
Segmentadresse angibt.
EQUIVALENCE() zwischen Character und anderen Typen
sowie Mischen im Common.
Rekursive Unterprogrammaufrufe.
Namen mit max. 8 Zeichen (Standart: 6).
Als wichtigste Beschraenkungen gibt es:
32kB Code+SAVE/DATA pro Unterprogramm
32kB lokale Daten pro Unterprogramm (Stackframe)
32kB pro Common (eigentlich 64kB, aber die Adresse
des letzten Feldes muss <32k sein)
700 Unterprogramme pro Datei
500 Verschiedene Commons pro Datei.
Daneben gibt es eine Reihe von Beschraenkungen, die bei
unvernuenftig grossen Unterprogrammen zu Fehlermeldungen
fuehren, meistens waere dann aber ohnehin die 32kB Code
Grenze ueberschritten.
Linker
------
Der Linker wird gestartet mit:
BCL [-Optionen...] Datei...
Enthaelt Datei keinen Punkt, so wird .B angehaengt.
Die Programmdatei wird mit dem Namen der ersten Datei,
aber mit .EXE statt .B, gespeichert.
Es muss auch die Datei LIB.B aufgefuehrt werden, um die
Standartfunktionen und die I/O-Routinen zum Programm
dazu zu linken.
Beispiel:
BCL -S16 TEST SUB LIB
oder
BCL -S16 TEST.B SUB.B LIB.B
Linkt die Dateien TEST.B und SUB.B und speichert unter
TEST.EXE das lauffaehige Programm, das eine Stackgroesse
von 16kB verwendet.
Linker Optionen
---------------
-Sn Stackgroesse fuer das zu erzeugende Programm
wird auf n kB gesetzt (max. 64). Fehlt
diese Option, so wird ein 64kB grosser
Stack angenommen. Auf dem Stack werden
alle lokalen Variablen/Felder einer
Unterprogrammverschachtelung abgelegt.
-O Optimiertes Linken: nirgends aufgerufene
Unterprogramme werden weggelassen.
-P Protokoll: Liste der Commonbloecke und
Programmmodule.
Beschraenkungen
---------------
Die wichtigste Beschraenkung liegt in der RAM Groesse: die
zu erzeugende Programmdatei (ohne Commons und Stack)
kann maximal so gross sein, wie der groesste freie
Speicherblock nach Laden von BCL. Andererseits kann, bei
grossen Commons und Stack, auch ein Programm erzeugt
werden, dass im vorhandenen RAM nicht gestartet werden
kann.
Die Anzahl Unterprogramme ist auf 3000, die Anzahl
Commonbloecke auf 1500 beschraenkt. (Die laecherliche
640kB Begrenzung von MS-DOS duerfte davor greifen.)
Laufzeitsystem
--------------
Das Laufzeitsystem BCRTSY.EXE enthaelt Routinen, die von
einem FORTRAN77 Programm benoetigt werden und muss vor
dem Programmstart resident geladen sein.
BCRTSY enthaelt:
Arithmetikroutinen:
32 bit INTEGER Multiplikation/Division
REAL Arithmetik
DOUBLE PRECISION Arithmetik
Es wird das IEEE Gleitkommaformat verwendet,
REAL: 7 Dezimalstellen, 32 bit
1 bit Vorzeichen, 8 bit Exp., 24 bit Mantisse.
DOUBLE PRECISION: 14 Dezimalstellen, 64 bit
1 bit Vorzeichen, 11 bit Exp., 52 bit Mantisse.
Ein mathematischer Koprozessor wird nicht
unterstuetzt. (Eine 80x87/version exisiert,
kann je